#######################################################
# installed directories
#######################################################
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
datadir=@datadir@
mandir=@mandir@
libdir=@libdir@
sharedstatedir=@sharedstatedir@
sysconfdir=@sysconfdir@/pipes
includedir=@includedir@/pipes
datarootdir=@datarootdir@
docdir=@datadir@/doc/pipes

##########################################################
# environmnet variables
##########################################################
CC=@CC@
INSTALL=@INSTALL@
CFLAGS=@CFLAGS@
LIBS=@LIBS@
OBJ=@OBJ@
PIPES_OBJ=@PIPES_OBJ@
LIBPIPESSO=@LIBPIPESSO@
LIBPIPESSO1=@LIBPIPESSO1@
LIBPIPESA=@LIBPIPESA@
DESTDIR=
SYSTEM_MIGEMODIR=@SYSTEM_MIGEMODIR@
SO_VERSION=@SO_VERSION@

##########################################################
all: lib pipes
	rm -f install

lib: $(LIBPIPESSO1) $(LIBPIPESA)
	rm -f install

lib-install:
	if [ -z "$(DESTDIR)" ]; then make lib-normal-install; else make lib-dest-install; fi

lib-normal-install:
	mkdir -p "$(libdir)"
	if [ $(LIBPIPESA) = libpipes.a ]; then $(INSTALL) -m 644 -s libpipes.a "$(libdir)"; fi
	if [ $(LIBPIPESSO) = libpipes.so ]; then if echo $(CFLAGS) | grep -q MDEBUG; then $(INSTALL) -m 755 libpipes.so.$(SO_VERSION) "$(libdir)"; else $(INSTALL) -s -m 755 libpipes.so.$(SO_VERSION) "$(libdir)"; fi; elif [ $(LIBPIPESSO) = libpipes.dylib ]; then $(INSTALL) -m 755 libpipes.$(SO_VERSION).dylib "$(libdir)"; fi
	if [ $(LIBPIPESSO) = libpipes.so ]; then ln -s -f libpipes.so.$(SO_VERSION) "$(libdir)"/libpipes.so.1; elif [ $(LIBPIPESSO) = libpipes.dylib ]; then ln -s -f libpipes.$(SO_VERSION).dylib "$(libdir)"/libpipes.1.dylib; fi
	if [ $(LIBPIPESSO) = libpipes.so ]; then ln -s -f libpipes.so.$(SO_VERSION) "$(libdir)"/libpipes.so; elif [ $(LIBPIPESSO) = libpipes.dylib ]; then ln -s -f libpipes.$(SO_VERSION).dylib "$(libdir)"/libpipes.dylib; fi

lib-dest-install:
	mkdir -p "$(DESTDIR)/$(libdir)"
	if [ "$(LIBPIPESA)" = libpipes.a ]; then $(INSTALL) -m 644 -s libpipes.a "$(DESTDIR)/$(libdir)"; fi
	if [ "$(LIBPIPESSO)" = libpipes.so ]; then if echo $(CFLAGS) | grep -q MDEBUG; then $(INSTALL) -m 755 libpipes.so.$(SO_VERSION) "$(DESTDIR)/$(libdir)"; else $(INSTALL) -s -m 755 libpipes.so.$(SO_VERSION) "$(DESTDIR)/$(libdir)"; fi; elif [ "$(LIBPIPESSO)" = libpipes.dylib ]; then $(INSTALL) -m 755 libpipes.$(SO_VERSION).dylib "$(DESTDIR)/$(libdir)"; fi
	if [ "$(LIBPIPESSO)" = libpipes.so ]; then ln -s -f libpipes.so.$(SO_VERSION) "$(DESTDIR)/$(libdir)"/libpipes.so.1; elif [ "$(LIBPIPESSO)" = libpipes.dylib ]; then ln -s -f libpipes.$(SO_VERSION).dylib "$(DESTDIR)/$(libdir)"/libpipes.1.dylib; fi
	if [ "$(LIBPIPESSO)" = libpipes.so ]; then ln -s -f libpipes.so.$(SO_VERSION) "$(DESTDIR)/$(libdir)"/libpipes.so; elif [ "$(LIBPIPESSO)" = libpipes.dylib ]; then ln -s -f libpipes.$(SO_VERSION).dylib "$(DESTDIR)/$(libdir)"/libpipes.dylib; fi

clean:
	rm -fR pipes pipes.dSYM src/*.o libpipes* pipes.exe* config.log config.status *.stackdump autom4te.cache

distclean:
	rm -fR pipes pipes.dSYM src/*.o libpipes* config.h Makefile pipes.exe* config.log config.status *.stackdump autom4te.cache

pipes: config.h src/main.c $(LIBPIPESSO)
	$(CC) -o pipes src/main.c $(CFLAGS) $(PIPES_OBJ) $(LIBS)

########################################################
# pipes libraries
########################################################
libpipes.so.$(SO_VERSION): $(OBJ)
	gcc -shared -o libpipes.so.$(SO_VERSION) $(OBJ) -lc $(LIBS) $(CFLAGS)

libpipes.so: libpipes.so.$(SO_VERSION)
	ln -s libpipes.so.$(SO_VERSION) libpipes.so.1
	ln -s libpipes.so.$(SO_VERSION) libpipes.so

libpipes.a: $(OBJ)
	ar rc libpipes.a $(OBJ)
	ranlib libpipes.a
#	strip libpipes.a

########################################################
# pipes libraries on Darwin
########################################################
libpipes.$(SO_VERSION).dylib: $(OBJ)
	gcc -dynamiclib -o libpipes.$(SO_VERSION).dylib $(OBJ) -lc $(LIBS) $(CFLAGS)

libpipes.dylib: libpipes.$(SO_VERSION).dylib
	cp libpipes.$(SO_VERSION).dylib libpipes.1.dylib
	cp libpipes.$(SO_VERSION).dylib libpipes.dylib

#########################################################
# install
#########################################################
$(OBJ): src/pipes/pipes.h src/pipes/block.h src/pipes/curses.h src/pipes/debug.h src/pipes/hash.h src/pipes/kanji.h src/pipes/list.h src/pipes/string.h src/pipes/vector.h Makefile configure

#########################################################
# install
#########################################################
install: lib-install
	if [ -z "$(DESTDIR)" ]; then make normal-install; else make dest-install; fi

normal-install:
	mkdir -p "$(bindir)"
	mkdir -p "$(sysconfdir)"
	mkdir -p "$(libdir)"
	mkdir -p "$(includedir)"
	mkdir -p "$(docdir)"
	mkdir -p "$(mandir)/man1"
	$(INSTALL) -m 644 src/pipes/block.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/curses.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/debug.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/hash.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/kanji.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/list.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/string.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/vector.h "$(includedir)"
	$(INSTALL) -m 644 src/pipes/pipes.h "$(includedir)"
	$(INSTALL) -m 644 USAGE "$(docdir)"
	$(INSTALL) -m 644 USAGE.ja "$(docdir)"
	$(INSTALL) -m 644 README "$(docdir)"
	$(INSTALL) -m 644 CHANGELOG "$(docdir)"
	rm -f $(bindir)/pipes
	if echo $(CFLAGS) | grep -q MDEBUG; then $(INSTALL) -m 755 pipes "$(bindir)"; else $(INSTALL) -s -m 755 pipes "$(bindir)"; fi;
	$(INSTALL) -m 644 man/man1/pipes.1 "$(mandir)/man1"
	$(INSTALL) -m 644 pipes.pi "$(sysconfdir)"
	$(INSTALL) -m 644 completion.pi "$(sysconfdir)"
	$(INSTALL) -m 644 help.pi "$(sysconfdir)"

dest-install:
	mkdir -p "$(DESTDIR)/$(bindir)";
	mkdir -p "$(DESTDIR)/$(sysconfdir)";
	mkdir -p "$(DESTDIR)/$(libdir)"
	mkdir -p "$(DESTDIR)/$(includedir)"
	mkdir -p "$(DESTDIR)/$(docdir)"
	mkdir -p "$(DESTDIR)/$(mandir)/man1"
	$(INSTALL) -m 644 src/pipes/block.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/curses.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/debug.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/hash.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/kanji.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/list.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/string.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/vector.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 src/pipes/pipes.h "$(DESTDIR)/$(includedir)"
	$(INSTALL) -m 644 USAGE "$(DESTDIR)/$(docdir)"
	$(INSTALL) -m 644 USAGE.ja "$(DESTDIR)/$(docdir)"
	$(INSTALL) -m 644 README "$(DESTDIR)/$(docdir)"
	$(INSTALL) -m 644 CHANGELOG "$(DESTDIR)/$(docdir)"
	rm -f "$(DESTDIR)/$(bindir)/pipes"
	if echo $(CFLAGS) | grep -q MDEBUG; then $(INSTALL) -m 755 pipes "$(DESTDIR)/$(bindir)"; else $(INSTALL) -s -m 755 pipes "$(DESTDIR)/$(bindir)"; fi;
	$(INSTALL) -m 644 man/man1/pipes.1 "$(DESTDIR)/$(mandir)/man1"
	$(INSTALL) -m 644 pipes.pi "$(DESTDIR)/$(sysconfdir)"
	$(INSTALL) -m 644 completion.pi "$(DESTDIR)/$(sysconfdir)"
	$(INSTALL) -m 644 help.pi "$(DESTDIR)/$(sysconfdir)"

